跳到主要内容

Dart 的变量与类型

想要更好的学习flutter,我们首先要学习Dart语言。 在 Dart 中,变量和类型是编程的基础。以下是关于 Dart 变量与类型的详细讲解:

变量的声明和初始化

在 Dart 中,变量可以使用 varfinalconst 关键字来声明。

  1. var 关键字:用于声明一个变量,类型由编译器根据变量的初始值来推断。例如:
    var name = 'kunkun';
    var age = 30;
  2. final 关键字:用于声明一个只能赋值一次的变量(运行时常量)。final 变量在运行时初始化后不能再修改。例如:
     final name = 'kunkun';
    final int age = 30;
  3. const 关键字:用于声明一个编译时常量。const 变量在编译时即已确定,不可改变。例如:
    const pi = 3.14;
    const int maxAge = 100;

数据类型

Dart 是一种强类型语言,每个变量都有一个类型。以下是 Dart 的一些基本数据类型:

数字类型 (Numbers):

  • int:表示整数。例如:int age = 30;
  • double:表示双精度浮点数。例如:double height = 5.9;

字符串类型 (Strings):

  • String:用于表示文本数据。例如:String name = 'Alice';

布尔类型 (Booleans):

  • bool:用于表示布尔值,true 或 false。例如:bool isActive = true;

列表类型 (Lists):

  • List:表示一个有序的对象集合。例如:List<int> numbers = [1, 2, 3];

集合类型 (Sets):

  • Set:表示一个无序且不重复的对象集合。例如:Set<String> names = {'Alice', 'Bob'};

映射类型 (Maps):

  • Map:表示一个键值对集合。例如:Map<String, int> ages = {'Alice': 30, 'Bob': 25};

类型检查与类型转换

Dart 提供了类型检查和类型转换的功能。

类型检查:

使用 is 运算符可以检查一个对象是否为某种类型。例如:

var name = 'kunkun';
if (name is String) {
print('Name is a String');
}

类型转换:

使用 as 运算符可以将一个对象转换为某种类型。例如:

var value = 42;
var stringValue = value as String; // 这行代码会导致运行时错误,因为 int 不能转换为 String

类型推断

Dart 支持类型推断,即编译器可以根据上下文自动推断变量的类型。例如:

var name = 'kunkun'; // Dart 自动推断 name 的类型为 String
var age = 30; // Dart 自动推断 age 的类型为 int

示例代码

以下是一个包含变量声明、初始化和类型使用的示例:

void main() {
var name = 'kunkun'; // 类型为 String
final int age = 30; // 类型为 int
const double height = 5.9; // 类型为 double

bool isActive = true; // 类型为 bool
List<String> hobbies = ['Reading', 'Swimming']; // 类型为 List<String>
Set<String> skills = {'Dart', 'Flutter'}; // 类型为 Set<String>
Map<String, int> scores = {'Math': 95, 'Science': 90}; // 类型为 Map<String, int>

// 类型检查
if (name is String) {
print('Name is a String');
}

// 打印变量
print('Name: $name, Age: $age, Height: $height');
print('Active: $isActive');
print('Hobbies: $hobbies');
print('Skills: $skills');
print('Scores: $scores');
}